A data structure to represent a language usually contains a plurality of language identifiers or language tags. Language tags have a language code and may also include a region code, script information, or both a region code and script information. The language code indicates a language, such as English. A region code indicates the dialect or locale of the language, such as Great Britain. “Latin” is an example of script information; script information indicates the written form of the identified language. A user interface may provide to a user a list of supported languages for an application with a language picker that allows the user to specify which supported language is preferred by the user. The language picker typically presents the available languages without regard to whether the region code is required or present. For example, the English language contains several dialects, perhaps the best known being British and American, which differ in speech, orthography, and grammar. For example, if the language tags include “en-US” and “en-GB”, a language picker typically will present these as “English (US)” and “English (GB)” respectively, based exclusively on the language identifier, without considering other information about languages being provided in a language selection tool. In another example, if the language tags include “en” and “en-GB”, a language picker will display “English” and “English (GB)” respectively. Thus, a conventional language picker typically only displays a description of the language tags that it receives, and does not supplement information to clarify what language choice is available to a user.
Language tags are abbreviated language codes and, typically, the Internet Engineering Task Force (“IETF”) language tags are employed in applications. For example, “en” is an IETF language tag that refers to the English language. BCP-47 is the IETF's current standard for language tags and the current specification for BCP-47 is RFC-5646, which describes the language tag syntax. Language tags are used in a variety of internet protocols, such as HTTP, and programming languages such as HTML. In practice, programmers generally avoid adding region codes or scripts to language tags where they do not add distinguishing information. Thus, the IETF language tags are a de facto language standard for many programs.